#include <iostream>

using namespace std;

/**
 * C++ 基础语法
 * 运算符的使用
*/
int main()
{

    // C++ 输入
    // cin
    string name;
    cin >> name;

    // C++ 输出
    cout << "name = " << name << endl;


    // 算数运算符
    int a = 10;
    int b = 20;
    int c = a + b;
    cout << "c = " << c << endl;

    // 赋值运算符
    int d = 10;
    d += 20;
    cout << "d = " << d << endl;

    // 关系运算符
    int e = 10;
    int f = 20;
    cout << (e == f) << endl;

    // 逻辑运算符
    bool g = true;
    bool h = false;
    cout << (g && h) << endl; // 逻辑与，符号两边的表达式都为真，结果才为真
    cout << (g || h) << endl; // 逻辑或，符号两边的表达式只要有一个为真，结果就为真
    cout << (!g) << endl; // 逻辑非，与表达式的结果相反


    // 条件运算符
    int i = 10;
    int j = 20;
    int k = (i > j) ? i : j;  // 如果 i > j 为真，则 k = i，否则 k = j
    cout << "k = " << k << endl;

    // 位运算符(难点，需要掌握二进制相关知识)
    int l = 10;
    int m = 20;
    int n = l & m;
    cout << "n = " << n << endl; // 按位与，符号两边的表达式对应位都为1，结果才为1

    // 位移运算符(难点，需要掌握二进制相关知识)
    int o = 10;
    int p = o << 2; // 左移2位，相当于乘以2的2次方
    cout << "p = " << p << endl;

    // 其他运算符
    int q = 10;
    int r = q++; //
    cout << "r = " << r << endl;
    cout << "q = " << q << endl;

    // 运算符优先级
    int s = 10;
    int t = 20;
    int u = 30;
    int v = s + t * u; // 先乘除法后加减法
    int w = (s + t) * u; // 加括号改变优先级，先加法后乘法

    // 取模运算符，取余运算符
    cout << "s % t = " << s % t << endl;
    cout << "v = " << v << endl;


    return 0;
}